home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 253_01 / charclas.c < prev    next >
Text File  |  1990-02-13  |  2KB  |  67 lines

  1.                                          /* Chapter 13 - Program 2 */
  2. #include "stdio.h"
  3. #include "ctype.h"       /* Note - your compiler may not need this */
  4.  
  5. void count_the_data(char line[]);
  6.  
  7. void main()
  8. {
  9. FILE *fp;
  10. char line[80], filename[24];
  11. char *c;
  12.  
  13.    printf("Enter filename -> ");
  14.    scanf("%s",filename);
  15.    fp = fopen(filename,"r");
  16.  
  17.    do {
  18.       c = fgets(line,80,fp);   /* get a line of text */
  19.       if (c != NULL) {
  20.          count_the_data(line);
  21.       }
  22.    } while (c != NULL);
  23.  
  24.    fclose(fp);
  25. }
  26.  
  27. void count_the_data(char line[])
  28. {
  29. int whites, chars, digits;
  30. int index;
  31.  
  32.    whites = chars = digits = 0;
  33.  
  34.    for (index = 0;line[index] != 0;index++) {
  35.       if (isalpha(line[index]))   /* 1 if line[] is alphabetic  */
  36.           chars++;
  37.       if (isdigit(line[index]))   /* 1 if line[] is a digit     */
  38.           digits++;
  39.       if (isspace(line[index]))   /* 1 if line[] is blank, tab, */
  40.           whites++;               /*           or newline       */
  41.    }   /* end of counting loop */
  42.  
  43.    printf("%3d%3d%3d %s",whites,chars,digits,line);
  44. }
  45.  
  46.  
  47.  
  48. /* Result of execution (This is a portion of the output, but the
  49.           comments have been removed to allow this section to be
  50.           included as one large comment.  This output assumes that
  51.           CHARCLAS.C is selected as the input file.)
  52.  
  53.   1  0  0
  54.  10 22  2    for (index = 0;line[index] != 0;index++) {
  55.  18 36  1       if (isalpha(line[index]))
  56.  11  5  0           chars++;
  57.  22 32  1       if (isdigit(line[index]))
  58.  11  6  0           digits++;
  59.  18 34  1       if (isspace(line[index]))
  60.  45 15  0           whites++;
  61.  12 17  0    }
  62.   1  0  0
  63.   5 31  3    printf("%3d%3d%3d %s",whites,chars,digits,line);
  64.   1  0  0 }
  65.  
  66. */
  67.